from keras.models import Sequential
from keras.layers import Embedding, Flatten, Dense
from keras.datasets import imdb
from keras_preprocessing import sequence

# Embedding层至少需要两个参数：标记的个数（这里是1000，即最大单词索引 +1）和嵌入的维度（这里是64）
embedding_layer = Embedding(1000, 64)

max_features = 10000 # 作为特征的单词个数
maxlen = 20  # 在这么多单词后截断文本（这些单词属于前max_fratures个最常见的单词）
# 将数据加载为整数列表
(x_train,y_train),(x_test,y_test) = imdb.load_data(
    num_words=max_features)
print(x_train)
# 将整数列表转换成形状为（samples,maxlen)的二维整数张量
# pad_sequences()将序列转化为经过填充以后的一个长度相同的新序列新序列
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)

model = Sequential()
# 指定Embedding层的最大输入长度，以便后面将嵌入输入展平。Embedding层激活的形状为（samples，maxlen,8)
model.add(Embedding(10000, 8, input_length=maxlen))
# 将三维的嵌入张量展平成形状为（samples,maxlen * 8）的二维张量
model.add(Flatten())
# 在上面添加分类器
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
model.summary()

history = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
